Field of the Invention
The invention described herein relates to publication of media content through a computer network.
Related Art
The popularity of the World Wide Web (“Web”) and services provided on the Web has increased the demands placed upon Web sites. Server farms made up of a number of servers are sometimes used to provide computing power for a Web site. The load capacity on a single Internet Protocol (IP) based application server such as a Web server is often fixed. When a load upon a server reaches a certain level, performance of the server can degrade.
Therefore, given a server farm, load balancers can be used to distribute computing work load across different servers. FIG. 1 shows an example conventional load balancer 100 coupled to a server farm 110. Server farm 110 has multiple Web servers 120, 130 and 140. Load balancer 100 processes requests made by Internet users 105. Load balancer 100 is manually configured with a list of candidate Web servers 120-140 in a given pool, each with their respective resources. Load balancer 100 can then distribute client requests in a round-robin fashion among the available Web servers 120-140.
Load balancer 100 has a number of limitations. First, load balancer 100 does not discriminate among requests. All requests are handled equally regardless of whether a particular request involves more complex computing or a higher workload, relative to other requests. Treating a high workload request in the same manner as a low workload request can create an imbalance across servers. Second, load balancer 100 can manage multiple unrelated pools of servers, but is not aware of the data flow between pools of servers. This hampers load management. Third, the configuration needed in load balancer 100 can make it difficult to retire or reassign servers frequently or automatically. Operator intervention may be required, since the retiring or reassignment of a server must generally be carefully synchronized with changes on the load-balanced machines.
Load balancer 100 generally has a limited fault tolerance, based only on server availability. Load balancer 100 may perform a TCP-level check on the availability of Web servers 120-140 and distribute requests to available Web servers. This distribution (based on availability) is fairly crude and does not take into account whether an available server can provide a useful service in light of a particular task.
Conventional load balancers are generally limited by a lack of understanding of higher layer operations being carried out by servers. For example, many conventional load balancers work at a transport layer (OSI Layer 4) using TCP. At this layer, a load balancer can only determine that a server is willing to accept a connection, but not whether the server can satisfy a given request sent on that connection.
Moreover, a request from a user may not require the attention of a server in farm 110. Alternatives may exist for the satisfaction of a user request. A server external to farm 110 may best be able to handle the request, for example. Alternatively, a request for data could be handled by reading the requested data from a memory unit, such as a cache, and delivering the data to the user. In either of these cases, the processing of one of the servers 120-140 is not necessary.
Therefore, a need exists for a system that can intelligently process a user request, either by directing the processing of the request to one of a set of servers so as to effectively balance the load among the servers, or by directing the processing of the request to an appropriate alternative means for satisfying the request.